package com.bbs.toutiao.controller.admin;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Assert;
import com.bbs.toutiao.aspect.SysLog;
import com.bbs.toutiao.entity.NotificationsEntity;
import com.bbs.toutiao.service.admin.impl.NotServiceImpl;
import com.bbs.toutiao.utils.Result;
import com.bbs.toutiao.vo.article.ArticlePageRequestVo;
import com.bbs.toutiao.vo.client.AddNotificationVo;
import com.bbs.toutiao.vo.comm.PageVo;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

/**
 * 描述: 举报管理
 * 作者： zhangBin
 * 时间： 2023/9/29 11:01
 * 版本： 1.0
 */

@RestController
@RequestMapping("/not")
public class NotificationController {

    @Resource
    NotServiceImpl notService;


    //动态获取评消息管理
    @SysLog("管理员获取举报信息")
    @PostMapping("/findByNotifications")
    public Result getAllNotifications(@RequestBody ArticlePageRequestVo requestVo) {
        if (requestVo.getPage() < 1 || requestVo.getSize() < 1) {
            return Result.error(401, "请求的数据格式错误");
        }
        requestVo.setPage(requestVo.getPage(), requestVo.getSize());
        PageVo<NotificationsEntity> commentPage = notService.getAllNot(requestVo);
        return Result.success("查询成功", commentPage);
    }

    //更新消息
    @SysLog("管理员处理举报信息")
    @PostMapping("/updateStatusById")
    public Result updateStatusById(@RequestBody List<Map<String, Integer>> list) {
        if (CollUtil.isEmpty(list)) {
            return Result.error(404, "修改的数据不能为空");
        } else {
            int i = notService.updateStatus(list);
            return Result.success("处理待办" + i + "个");
        }
    }



    /**
     * 发布举报
     * @param addNotificationVo
     * @return Result
     */
    @SysLog("用户提交举报信息")
    @PostMapping("/addNotification")
    public Result addNotification(@RequestBody AddNotificationVo addNotificationVo){
        try {
            Assert.notBlank(addNotificationVo.getTargetContent());
            Assert.notBlank(addNotificationVo.getReportDescription());
            Assert.notBlank(addNotificationVo.getType());
            Assert.isTrue(addNotificationVo.getReportId()>0);
            Assert.isTrue(addNotificationVo.getUserId()>0);
        } catch (Exception e) {
            return Result.error(404, "内容不能为空");
        }
        int i = notService.addNot(addNotificationVo);
        if (i>0){
            return  Result.success("反馈成功，平台即将处理");
        }
        return Result.error(404, "信息错误");
    }
}
